#include<iostream>
#include<algorithm> 
#include<cstring>

using namespace std;

int num[1000];
int size[1000];
int t,n,m;
int c;

int find(int i);
int unionU(int a,int b);

int main(void)
{
	int i,j,a,b;
	cin>>t;
	for(i=0;i<t;i++)
	{
		memset(num,0,sizeof(int)*1000);
		memset(size,1,sizeof(int)*1000);
		cin >> n >> m;
		for(j=0;j<n;j++)
		{
			num[j]=j;
		
		}
		c=n;
	
		for(j=0;j<m;j++)
		{
			cin >> a >> b;
			unionU(a,b);
		}
		cout<<c<<endl;
	}
}

int find(int i)
{
	while(num[i]!=i)
	{
		num[i]=num[num[i]];
		i=num[i];
	}
	return i;
}

int unionU(int a,int b)
{
	int rootA=find(a);
	int rootB=find(b);
	if(rootA==rootB)  return -1;
	if(size[rootA]>size[rootB])
	{
		num[rootB]=rootA;
		size[rootA]=size[rootA]+num[rootB];
	}
	else
	{
		num[rootA]=rootB;
		size[rootB]=size[rootA]+num[rootB];
	}
	c--;
	return c;
}


